<?php
namespace app\tactics\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\tactics\model\Attr as AttrModel;
use think\Db;
/**
 * 策略属性控制器
 * @package app\tactics\controller
 */
class Attr extends Admin
{
    //可选属性列表
    public function index()
    {
        // 读取用户数据
        $attr_list = Db::name('tactics_attr')->paginate();

         // 使用ZBuilder快速创建数据表格
         return     ZBuilder::make('table')
                    ->setPrimaryKey('AttrID')
                    ->hideCheckbox()
                    ->addColumns([ // 批量添加列
                        ['AttrID', '属性ID'],
                        ['AttrGroup', '所属分组','','',['Member'=>'客户相关','Goods'=>'商品相关','Order'=>'订单相关']],
                        ['AttrCode', '属性Code'],
                        ['AttrName', '属性名称'],
                        ['InitType', '录入方式','','',['Select'=>'下拉选择','Text'=>'文本输入','SectionInput'=>'区间输入']],
                        ['SourceTable', '数据表'],
                        ['DataField', '数据字段'],
                        ['SerchParams', '筛选条件','','','','fix-table-td'],
                        ['Status', '状态', 'switch', '', ['已启用', '未启用']],
                        ['Remark', '备注'],
                        ['right_button', '操作','btn'],
                    ])
                    ->addTopButton('add') // 添加顶部按钮
                    ->addTopButton('disable') // 添加顶部按钮
                    ->addRightButton('edit')
                    ->setRowList($attr_list) // 设置表格数据
                    ->fetch(); // 渲染页面
    }

    //添加可选属性
    public function add($record = []){

        // 保存数据
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();
            if ($config = AttrModel::create($data)) {
                $this->success('新增成功');
            } else {
                $this->error('新增失败');
            }
        }

        $InitType = ['Text' => '文本输入', 'Select' => '下拉选择', 'SectionInput' => '区间输入'];
        $Group = ['Member' => '客户相关', 'Goods' => '商品相关', 'Order' => '订单相关'];
        return  ZBuilder::make('form')
                ->setPageTitle('添加备选属性')
                ->setPageTips('Tips:<br/>设置方式如果选择下拉选择，必须指定数据表和对应字段')
                ->addFormItems([
                    ['Select', 'AttrGroup','所属分组', '', $Group],
                    ['text', 'AttrName', '属性名称'],
                    ['text', 'AttrCode', '属性Code'],
                    ['Select', 'InitType','设置方式', '', $InitType],
                    ['text', 'SourceTable', '数据表'],
                    ['text', 'DataField', '对应字段'],
                    ['text', 'SerchParams', '筛选条件'],
                    ['Textarea', 'Remark', '属性介绍'],
                    ['Radio', 'Status', '当前状态', '', ['0' => '禁用', '1' => '开启'],'1'],
               ])
               ->layout(['AttrGroup' => 3,'AttrName' => 3, 'AttrCode' => 3, 'InitType' => 3, 'SourceTable' => 4, 'DataField' => 4,'SerchParams'=>4, 'Remark' => 12])
               ->setTrigger('InitType', 'Select', 'SourceTable,DataField,SerchParams')
               ->fetch(); // 渲染页面
    }
    //编辑所选属性
    public function edit($id = 0){
        if ($id === 0) $this->error('参数错误');
        //源数据
        $data = AttrModel::get($id);
        //编辑后保存
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();
            if ($config = AttrModel::update($data)) {
                $this->success('编辑成功');
            } else {
                $this->error('编辑失败');
            }
        }
        //创建修改编辑页面
        $InitType = ['Text' => '文本输入', 'Select' => '下拉选择', 'SectionInput' => '区间输入'];
        $Group = ['Member' => '客户相关', 'Goods' => '商品相关', 'Order' => '订单相关'];

        return  ZBuilder::make('form')
                ->setPageTitle('编辑备选属性')
                ->setPageTips('Tips:<br/>设置方式如果选择下拉选择，必须指定数据表和对应字段')
                ->addHidden('AttrID')
                ->addFormItems([
                    ['Select', 'AttrGroup','所属分组', '', $Group],
                    ['text', 'AttrName', '属性名称'],
                    ['text', 'AttrCode', '属性Code'],
                    ['Select', 'InitType','设置方式', '', $InitType],
                    ['text', 'SourceTable', '数据表'],
                    ['text', 'DataField', '对应字段'],
                    ['text', 'SerchParams', '筛选条件'],
                    ['Textarea', 'Remark', '属性介绍'],
                    ['Radio', 'Status', '当前状态', '', ['0' => '禁用', '1' => '开启'],'1'],
               ])
               ->layout(['AttrGroup' => 3,'AttrName' => 3, 'AttrCode' => 3, 'InitType' => 3, 'SourceTable' => 4, 'DataField' => 4,'SerchParams'=>4,'Remark' => 12])
               ->setTrigger('InitType', 'Select', 'SourceTable,DataField,SerchParams')
               ->setFormData($data)
               ->fetch(); // 渲染页面
    }
    //禁用所选属性
    public function disable($record = []){

    }

    //测试用
    public function test(){
		$InitType = ['Text' => '文本输入', 'Select' => '下拉选择', 'SectionInput' => '区间输入'];
        $Group = ['Member' => '客户相关', 'Goods' => '商品相关', 'Order' => '订单相关'];
        return  ZBuilder::make('mix')
                ->setPageTitle('添加备选属性')
                ->setPageTips('Tips:<br/>设置方式如果选择下拉选择，必须指定数据表和对应字段')
                ->addFormItems([
                    ['Select', 'AttrGroup','所属分组', '', $Group],
                    ['text', 'AttrName', '属性名称'],
                    ['text', 'AttrCode', '属性Code'],
                    ['Select', 'InitType','设置方式', '', $InitType],
                    ['text', 'SourceTable', '数据表'],
                    ['text', 'DataField', '对应字段'],
                    ['text', 'SerchParams', '筛选条件'],
                    ['Textarea', 'Remark', '属性介绍'],
                    ['Radio', 'Status', '当前状态', '', ['0' => '禁用', '1' => '开启'],'1'],
               ])
               ->layout(['AttrGroup' => 3,'AttrName' => 3, 'AttrCode' => 3, 'InitType' => 3, 'SourceTable' => 4, 'DataField' => 4,'SerchParams'=>4, 'Remark' => 12])
               ->setTrigger('InitType', 'Select', 'SourceTable,DataField,SerchParams')
               ->fetch(); // 渲染页面
    }
}
